package com.trabalhoEngenharia.classesDeUsuario;

import java.util.ArrayList;

import com.trabalhoEngenharia.classesDoSistema.Biblioteca;
import com.trabalhoEngenharia.classesDoSistema.Emprestimo;
import com.trabalhoEngenharia.classesDoSistema.Exemplares;
import com.trabalhoEngenharia.classesDoSistema.Reserva;
import com.trabalhoEngenharia.classesMateriais.Material;

public class EmprestimoAluno implements RegraEmprestimo {
	
	@Override
	public String PegarEmprestimo(Material material, Usuario usuario) {
		
		
		
		Reserva reserva = Biblioteca.ObterReserva(usuario.getCodigoUsuario(), material.getCodMaterial());
		Exemplares exemplar = Biblioteca.PegarExemplarDisponivel(material.getCodMaterial());
		boolean regrasDeEmprestimo = ((reserva != null 
				|| Biblioteca.ChecaDisponibilidade(material.getCodMaterial() )) && exemplar !=null 
				&& ChecaLimiteMaterial(usuario) && Biblioteca.ChecaUsuarioEmDia(usuario.getCodigoUsuario()) 
				&& !Biblioteca.ChecaMaterialJaEmprestado(material.getCodMaterial(), usuario.getCodigoUsuario() ));
		if (regrasDeEmprestimo)
		{
			
				
			exemplar.setStatusExemplar("emprestado");
			Emprestimo emprestimo = new Emprestimo(material, usuario, exemplar);
			
			
			
			
			Biblioteca.InserirEmprestimo(emprestimo);
				
		
			if (reserva!=null) reserva.setStatusReserva("Finalizada");	
			
			return sucesso;
			
			
		}
		
		
		return falha;
	
		
		
		
		
		
	}
	
	
	
	public boolean ChecaLimiteMaterial(Usuario usuario){
		
		
	ArrayList<Emprestimo> listaEmprestimos = Biblioteca.PesquisarEmprestimosAtuaisPorUsuario(usuario.getCodigoUsuario());
		
	return	(listaEmprestimos.size() < usuario.getLimiteMaterial());
		
		
	}	
	
	
	

	
	
	

}


